package com.etc.service.user.impl;

import com.etc.common.ServiceException;
import com.etc.controller.user.UserController;
import com.etc.dao.DeparmentMapper;
import com.etc.dao.LoginMapper;
import com.etc.dao.user.UserMapper;
import com.etc.po.Login;
import com.etc.po.Member;
import com.etc.service.user.IUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.HashMap;
import java.util.List;

@Service
public class UserServiceImp implements IUserService {
    private static final Logger logger = LoggerFactory.getLogger(UserServiceImp.class);
    // カスタマイズMapper
    @Autowired
    UserMapper mapper;

    // 生成したMapper
    @Autowired
    LoginMapper loginMapper;

    /**
     * 入力したデータより、ユーザインフォを取得する
     * 入力したデータ正確の場合、ユーザ登録時間を更新する
     * @param login
     * @return
     * @throws ServiceException
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public Login findByLoginUname(Login login) throws ServiceException {
        Login loginpo = mapper.selectByLoginUname(login);
        if (loginpo == null) {

            throw new ServiceException("E0001");
        } else {
            if (!login.getPassword().equals(loginpo.getPassword())) {
                throw new ServiceException("E0002");
            }
        }

        int r = mapper.updateLoginDate(loginpo);
        if (r != 1) {
            logger.error("登録時間更新しない");
            throw new ServiceException("E9999");
        }

        return login;
    }

    /**
     * ページ分けのテスト
     * @return
     */
    @Override
    public List<Login> list() {
        return loginMapper.selectALL();
    }


    @Override
    public List<HashMap> findAllDeptInfo() {

        return mapper.selectAllDept();
    }

    @Override
    public List<Member> findMemberByCondtion(HashMap params) {


        return mapper.findByCondition(params);
    }
}
